package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.IUserDao;
import com.cn.wanxi.dao.impl.UserImpl;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.IUserService;

import java.util.List;

public class UserServiceImpl implements IUserService {
    @Override
    public int add(UserModel userModel) {
        IUserDao iuserDao = new UserImpl();
//新增用户名之前，我们需要判断当前用户名是否存在，
//        如果存在，则提示用户已存在，如果不存在，则进行新增处理
        boolean isHave = isHaveFindByUsername(userModel.getUsername());
        if (isHave) {
            return 4;
        } else {
            int count = iuserDao.add(userModel);
            return count;
        }

    }

    @Override
    public int login(UserModel userModel) {
//        根据用户名和密码判断该用户是否存在，如果存在则返回true，否则返回false
        if (isHaveFindByUsernameAndPassword(userModel)) {
            return 1;
        }
        return 0;
    }

    @Override
    public List<UserModel> findAll() {
        IUserDao iUserDao=new UserImpl();
        List<UserModel> list=iUserDao.findAll();
        return list;
    }

    @Override
    public int delete(Integer aa) {
        IUserDao iUserDao=new UserImpl();
        return iUserDao.delete(aa);
    }

    @Override
    public List<UserModel> findAllBySome(UserModel userModel) {
        IUserDao iUserDao=new UserImpl();
        List<UserModel> list=iUserDao.findAllBySome(userModel);
        return list;
    }

    /**
     * 根据用户ID查询数据
     * @param id
     * @return
     */
    @Override
    public UserModel findById(Integer id) {
        IUserDao iUserDao=new UserImpl();
        return iUserDao.findById(id);
    }

    @Override
    public int edit(UserModel userModel) {
        IUserDao iUserDao=new UserImpl();
        return iUserDao.edit(userModel);
    }

    @Override
    public int getCount(UserModel userModel) {
        IUserDao iUserDao=new UserImpl();
        return iUserDao.getCount(userModel);
    }

    /**
     * 根据用户名和密码判断该用户是否存在，如果存在则返回true，否则返回false
     *
     * @param userModel
     * @return
     */
    private boolean isHaveFindByUsernameAndPassword(UserModel userModel) {
        IUserDao iUserDao = new UserImpl();
        UserModel model = iUserDao.isHaveFindByUsernameAndPassword(userModel);
        return model != null;
    }

    /**
     * 根据用户名去数据库查询是否存在,如果存在，则返回true，如果不存在则返回false
     *
     * @param username
     * @return
     */
    private boolean isHaveFindByUsername(String username) {
        IUserDao iUserDao = new UserImpl();
        UserModel userModel = iUserDao.findByUsername(username);
        boolean isHave = (userModel == null);
        return !isHave;
    }
}
